// 第06节：koa-bodyparser中间件

// 作用： 对于POST请求的处理，koa-bodyparser中间件可以把koa2上下文的formData数据解析到ctx.request.body中。
//      注意，这里说的是formData ，也就是说表单的形式，传过来的是age=12&name=Dfei  这种形式，其他形式用哪个中间件，暂时未知(已得到答案，一样用这个，jq的方法测试过，没毛病)


const Koa = require('koa');
const App = new Koa();
const bodyParser = require('koa-bodyparser'); //处理类似表单formData的方式传递过来的参数的中间件  npm install --save koa-bodyparser@3
// 直接可以用ctx.request.body进行获取POST请求参数

// 另外加n 支持跨域请求  npm install --save koa2-cors
const cors=require('koa2-cors')
// 允许跨域
App.use(cors())

App.use(bodyParser());

App.use(async(ctx)=>{
    if(ctx.url==='/' && ctx.method==='GET'){
        //显示表单页面
        let html=`
            <h1>JSPang Koa2 request POST</h1>
            <form method="POST" action="/">
                <p>userName</p>
                <input name="userName" /><br/>
                <p>age</p>
                <input name="age" /><br/>
                <p>website</p>
                <input name="webSite" /><br/>
                <button type="submit">submit</button>
            </form>
        `;
        ctx.body=html;
    }else if(ctx.url==='/' && ctx.method==='POST'){
         let postData= ctx.request.body;
         ctx.body=postData;
    }else{
        ctx.body='<h1>404!</h1>';
    }
 
});
 
 
App.listen(3000,()=>{
    console.log('服务已启动，端口号3000');
});


// 总结

// post获取穿过来的参数

// 利用koa-bodyparser可以获得post传过来的参数，是对象的形式
// 通过ctx.request.body获取



// get 获取传过来的参数通过

/**
 *
 * 从request中获取GET请求
 let request=ctx.request;
 let req_query=request.query;  //返回GET请求的URL的参数，形式是对象  {user:Dfei,age:18}
 let req_querystring=request.querystring //返回GET请求的URL的参数  形式是字符串  user=Dfei&age=18


 // 从上下文中直接获取
 let ctx_query=ctx.query; //{user:Dfei,age:18}
 let ctx_querystring=ctx.querystring  //user=Dfei&age=18 
 */ 